Direct Memory Access (DMA) is an essential feature of modern computers. DMA permits particular hardware subsystems of a computer to have read and/or write access to system memory independent of the Central Processing Unit (CPU). Some example hardware systems that may use DMA include, but are not limited to: disk drive controllers, RAID (Redundant Array of Independent Disks)-On-a-Chip (ROC) controllers, graphics cards, network cards, and sound cards. DMA may also be used for intra-chip data transfer on multi-core processors. Management and implementation of a DMA channel is typically performed by a DMA controller. Many times the DMA controller is equipped with local memory such that the DMA controller transfers data to and from the local DMA memory and the external main memory. Since the DMA controller manages the transfer of data and not the computer CPU, the data transfers that use DMA use much less computer CPU processing time, thus, increasing the effective computing power of a computer having a DMA controller. Without DMA, communication with peripheral devices or between cores of a multi-core system may fully occupy the CPU during the entire read/write operation, which makes the CPU unavailable for performing other computing tasks. With DMA, the CPU would initiate the transfer then do other operations while the transfer is in progress, and receive an interrupt from the DMA controller once the operation has been completed. Freeing the CPU from performing the data transfer with peripheral devices is especially important since communication with peripheral devices is typically slower than for normal system Random Access Memory (RAM), so the CPU would be unavailable for even longer periods of time during communication with peripheral devices without the use of a DMA channel managed by a DMA controller.
A typical DMA transfer copies a block of memory from one device to another. The CPU initiates the data transfer, but the CPU does not execute the data transfer itself. For an Industry Standard Architecture (ISA) bus, the data transfer is performed by a DMA controller, which is typically incorporated as part of the computer motherboard chipset. A Peripheral Component Interconnect (PCI) bus uses a bus mastering DMA where the peripheral device takes control of the bus and performs the transfer itself.
An embedded processor may include a DMA engine/controller within the chip to allow the processing element to issue a data transfer while continuing to perform other tasks during the data transfer. When the DMA controller is incorporated within a chip, the DMA controller is commonly referred to as a DMA engine. Multi-core embedded processors often include one or more DMA engines in combination with local DMA memory as subsystems within the chip multi-core processor chip.